Google Play开发者账户被封,如何快速再上架?
关注公众号,经常更新Android出海经验,微信添加“dev_oy”一起加GP交流群讨论出海技巧。
之前介绍过,常见Google开发者账户被封号原因,本篇就从Google Play开发者账户被封后,项目再研发方面实现如何快速再上架?
Google开发者又又又被封号?
Android独立开发,公众号:Android出海Google开发者又又又被封号?为什么!!!
1. 项目创建
建议通过AS新创建一个项目的方式来,如果是直接copy之前封号的项目,则原来项目是有关联可能的。
2. 文件创建
3. 项目架构
如果能够对项目架构进行重构,涉及改动的代码就会非常多,这样代码关联性可行性更小。
比如之前用MVC,你就改为MVP、MVVM、MVI架构。
4. 三方库
如果某个包用了某某功能的三方库,比如权限请求,那你也可以尝试在新包使用另外的权限三方库。
比如GitHub - guolindev/PermissionX换成GitHub - getActivity/XXPermissions权限请求框架。
5. Java or Kotlin
比如之前使用Java开发的,可以考虑全部或者部分转为kotlin代码,也可以尝试Java和Kotlin 代码并存的方式,尤其是不会被混淆的实体类可以考虑此玩法。
6. 混合开发
使用常规的纯原生开发,也可以考虑尝试混合开发。
比如简单的和 WebView 里面的 H5 进行配合(Google Play对H5和原生的比例 貌似没有啥规定)。
亦或者使用 Flutter、RN 的方式,部分代码放置在原生,也可以尝试使用Compose进行开发。
7. 内部SDK
一般公司内部所有的app,都使用的是一些内部公共SDK,只要在遇到过封号问题,就不要使用这种方式了。
即使是放到jitpack,jcenter上也有一定风险。
8. App Name
取一个跟之前不一样的就行,建议拿到名字上相关网站搜一下,同名是否多,尤其是有存在且对方已做商标保护的,那就更加不要同名了。
可参考:
apkcombo.com/zh/
9. 包名
同样,取一个跟之前不一样的,比如公司名称简称sl,建议包名中就不要有sl了,eg:com.sl.appname此类操作更不建议。
有些小伙伴取出来的包名,真的一看就是同样的一家公司的。
10. Logo
设计一个新的即可,主题色可以适当改下。
11. 签名
重新生成一个新jks文件、密码和名称都变更下,与之前的不要有任何相似。
比如公司名称简称sl,建议jks中就不要有sl了。
12. 域名
买一个新的域名使用,一个app一个单独域名,域名的雷同也是有点小讲究。
比如api.appName1.go、api.appName2.go,这种还是比较明显。
13. 项目结构目录
调整下结构目录,比如名称、嵌套顺序等。
14. 文件名
修改所有的类名、布局文件名、资源文件名。
15. 依赖Module
相应依赖的module也做包名、项目结构目录、文件名调整。
16. UI
尤其是启动页、首页、尽量重新设计,主题色最好与之前有较大变化。
如果有时间,UI全套改下,最为稳妥。
17. 图标
图标的文件名必须全部修改,单纯修改文件名,一个文件的md5其实不会变,需要修改文件的内容。
还可以对图片进行压缩、格式转换,比如png convert to webp或者webp convert to png。
18. 布局文件的控件id
比如之前是btn_login,调整为btn_submit、buttonSubmit等。
19. 布局文件的控件类型
比如之前是LinearLayout,调整为androidx.appcompat.widget.LinearLayoutCompat。
比如之前是TextView,调整为androidx.appcompat.widget.AppCompatTextView。
20. strings.xml
比如之前是
<string name="log_pwd">Password</string
调整为
<string name="log_title_pwd">Password</string>
21. 代码混淆
可参考1:
AndroidProguadRules
https://github.com/king-ma1993/AndroidProguadRules
建议对bt-proguard.txt内容进行相应替换,每个app保证混淆的内容不一样即可,Android超级变态的混淆词典,常规abcd等混淆方式对逆向的干扰程序并不是很大,所以需要一个变态的字典,使用方法如下:
在proguard-rules.pro文件中进行配置
-obfuscationdictionary bt-proguard.txt
-classobfuscationdictionary bt-proguard.txt
-packageobfuscationdictionary bt-proguard.txt
可参考2:
https://github.com/bytedance/AabResGuard/blob/develop/wiki/zh-cn/README.md
AabResGuard
对aab包的资源就行加密等处理。
22. ARouter
如果使用了ARouter 路由框架,建议做相应修改。
比如之前路由表
const val HOME: String = "/app/home"
调整为
const val INDEX: String = "/newapp/index"
23. 接口映射
比如之前登录接口是
@POST("sl/app/login")
suspend fun login(@Body params: HashMap<String, String>): NetResult<LoginResultEntity>
调整为
@POST("ax/FEW/MQx")
suspend fun loginInter(@Body params: HashMap<String, String>): BaseResult<LoginEntity>
可以看到有几个变化:
1、接口请求的具体地址变了。
2、请求返回的NetResult变了。
3、请求返回的实体名称也变了。
4、接口请求的方法名也变了。
24. 未混淆的类(实体类等)
比如之前是
data class LoginResultEntity(
val token: String? = "",
val avatar: String? = ""
)
调整为
1、名称变更
2、增加垃圾字段
data class LoginEntity(
val a="",
val b="",
val token: String? = "",
val avatar: String? = "",
val c=""
)
25. 垃圾代码
加点垃圾代码。
可参考:
AndroidJunkCode
https://github.com/qq549631030/AndroidJunkCode
唯一注意的是,混淆对相应垃圾代码保持不被混淆。
26. 变量、方法名
大部分的变量和方法在混淆都是被重命名的,尤其注意的是打包的aab文件中,没有被重名的,进行相应修改。
这些结果可通过工具jadx-gui进行查看。
27. 三方库
相关三方库升级、或者用其他相关库替换。
28. 三方SDK key
关于使用的一些三方SDK。
比如AppsFlyer,新建一个App会有一个dev key,AppsFlyer默认每个app 的 dev key都是一样的,可联系对应商户更改。
29. XmlClassGuard
混淆xml文件用到的类。
可参考:
XmlClassGuard
https://github.com/liujingxing/XmlClassGuard
以上就是实战快速再上架,作用很大的改进措施,想了解更多关于谷歌上架的知识,关注我们!